package com.yzc.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@RestController
@RequestMapping("/api")
public class FileUploadController {

    @PostMapping("/test")
    public String handleFileUpload(
            @RequestParam("file") MultipartFile file,
            @RequestParam("userid") String userid) { // 接收前端传来的用户 ID
        try {
            // 检查文件是否为空
            if (file.isEmpty()) {
                return "文件为空，请选择一个文件上传";
            }

            // 调用 saveFile 方法保存文件
            String result = saveFile(file, userid); // 传递用户 ID
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return "上传失败：" + e.getMessage();
        }
    }

    private String saveFile(MultipartFile file, String userid) { // 修改方法签名
        String directoryPath = "D:\\MyCode\\Frontend\\vue_bi\\src\\testImg"; // 指定保存目录
        File directory = new File(directoryPath);

        if (!directory.exists()) {
            directory.mkdirs(); // 如果目录不存在，则创建目录
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String timestamp = dateFormat.format(new Date());

        String fileName = userid + "_" + timestamp + ".png"; // 使用用户 ID 作为文件名
        File destFile = new File(directoryPath, fileName);

        try {
            file.transferTo(destFile); // 保存文件
            return "文件保存成功，路径：" + destFile.getAbsolutePath();
        } catch (IOException e) {
            e.printStackTrace();
            return "文件保存失败：" + e.getMessage();
        }
    }
}

